package cn.zxinrun.core.constant;

import cn.hutool.core.lang.RegexPool;

/**
 * 常用正则表达式字符串
 * 常用正则表达式集合，更多正则见: https://any86.github.io/any-rule/
 * @author Mr.Zhang
 * @since 1.0
 **/
public interface RegexConstants extends RegexPool {

    // 通用状态（0表示正常，1表示停用）
    String STATUS = "^[01]$";
    // 字典类型必须以字母开头，且只能为（小写字母，数字，下滑线）
    String DICTIONARY_TYPE = "^[a-z][a-z0-9_]*$";

    // 权限标识必须符合 tool:build:list 格式，或者空字符串
    String PERMISSION_STRING = "^(|^[a-zA-Z0-9_]+:[a-zA-Z0-9_]+:[a-zA-Z0-9_]+)$";

    // 邮政编码
    String POSTAL_CODE = "^[1-9]\\d{5}$";
    // 注册账号
    String ACCOUNT = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
    // 密码：包含至少8个字符，包括大写字母、小写字母、数字和特殊字符
    String PASSWORD = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$";
    // QQ号码
    String QQ_NUMBER = "^[1-9][0-9]\\d{4,9}$";
    // 身份证号码（后6位）
    String ID_CARD_LAST_6 = "^(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";

    // 网址(URL)
    String WEBSITE = "^(((ht|f)tps?):\\/\\/)?([^!@#$%^&*?.\\s-]([^!@#$%^&*?.\\s]{0,63}[^!@#$%^&*?.\\s])?\\.)+[a-z]{2,6}\\/?";
    // 统一社会信用代码
    String UNI_CODE = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$";
    // 统一社会信用代码(宽松匹配)(15位/18位/20位数字/字母)
    String UNI_CODE_EASY = "^(([0-9A-Za-z]{15})|([0-9A-Za-z]{18})|([0-9A-Za-z]{20}))$";

    // md5格式(32位)
    String MD5 = "^[a-fA-F0-9]{32}$";
    // 版本号(version)格式必须为X.Y.Z
    String VERSION = "^\\d+(?:\\.\\d+){2}$";

}
